package com.catal.framework.query;

import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

import org.springframework.jdbc.core.ColumnMapRowMapper;

/**
 * 继承类ColumnMapRowMapper,使其返回值为小写(方便数据库处理)
 * 
 */
public class DBDataColumnMap extends ColumnMapRowMapper {

	/**
	 * 获取列名
	 * @param rsmd 查询结果集元数据
	 * @param i 列索引,第一列为1,第二列为2
	 * @return 列名
	 * @throws SQLException
	 */
	public static String getColumnName(ResultSetMetaData rsmd, int i)
			throws SQLException {
		String key = rsmd.getColumnLabel(i); // 若设置了字段的别名，如account_id as
												// accid，则key="accid"。
		if (key == null) {
			key = rsmd.getColumnName(i);
		}
		if (key == null) {
			key = "c" + i;
		}
		key = key.toLowerCase();
		return key;
	}

	/**
	 * 获取数据
	 * @param rs 查询结果集
	 * @param rowNum 当前行行号
	 */
	public Map mapRow(ResultSet rs, int rowNum) throws SQLException {
		ResultSetMetaData rsmd = rs.getMetaData();
		int columnCount = rsmd.getColumnCount();
		Map mapOfColValues = new HashMap();
		for (int i = 1; i <= columnCount; i++) {
			String key = DBDataColumnMap.getColumnName(rsmd, i);
			Object obj = null;
			try {
				obj = getColumnValue(rs, i);
			} catch (SQLException e) {
				throw e;
			}
			mapOfColValues.put(key, obj);
		}
		return mapOfColValues;
	}

	/**
	 * 获取ColumnKey
	 * @param columnName 列名
	 */
	protected String getColumnKey(String columnName) {
		//这个函数没有被调用
		return columnName.toLowerCase();
	}
}

